

/*
 * 
 * 通用ajax后台调用函数 param url:ajax 调用的后台响应url param param:ajax 调用后台传递参数(post method)
 * param callbackTarget 调用成功后回调函数目标对象 param callbackFunc 调用成功后执行的回调函数，回调函数接受两个参数
 * 回调函数参数: param callbackTarget: 回调目标对象 param r : json格式数据对象(ajax调用返回的远程数据))
 */
define(["jquery"], function($) {

	'use strict';	
	

	var msgServ = require('msgServ'), private_method = null;

	// 默认参数
	var default_setting

	private_method = {
		
		/**
		 * 后台ajax调用，返回调用结果数据
		 * 
		 * @param _options
		 *            ajax调用所需url,data,content等封装信息
		 * @param callbackFunc
		 *            回调函数
		 * @return 调用成功后，执行回调函数callbackFunc
		 * 
		 */
		runAjax : function(options, callbackFunc) {
			default_setting = {
				url : null,
				param : null,
				dataType : 'json',
				type : 'post',
				contentType : "json",
				callback : null,
				callbackParam : null,
				successMsg : null,
				error : null,
				backData : null
			};
			var args = $.extend(default_setting, options || {});

			var _method = args.method;

			if (_method) {
				if (_method == 'del')
					args.contentType = 'application/x-www-form-urlencoded; charset=UTF-8';
			}

			var _cType = args.contentType;
			if (_cType) {
				switch (_cType) {
					case 'form' :
						args.contentType = 'application/x-www-form-urlencoded; charset=UTF-8';
						break;
					case 'json' :
						args.contentType = "appliction/json;charset=utf-8";
						break;

				}
			}
			$.ajax({
						url : args.url,
						dataType : args.dataType,
						type : args.type,
						data : args.data,
						contentType : args.contentType,
						success : callbackFunc,
						error : function(jqXHR, textStatus, errorThrown) {
							// $.messager.alert('提示','加载失败,请重新刷新页面');	
							$.messager.progress('close')
							msgServ.Msgslide('操作失败,请重新刷新页面，如果问题仍旧存在，请联系系统管理员处理。');
						}
					});
		}

	};
	return {
		/**
		 * 
		 * 
		 */
		init : function() {
//			msgServ = app.getService('msg-serv');
		},

		/**
		 * 
		 * 
		 * 
		 */
		destory : function() {
//			msgServ = null;
		},

		/**
		 * 后台ajax调用，返回调用结果数据
		 * 
		 * @param _options
		 *            ajax调用所需url,data,content等封装信息
		 * @param _options.callback
		 *            模块内部回调函数，用于针对不同业务需求进行返回数据的处理
		 * @return 调用成功后，将调用结果数据作为参数执行业务回调函数(_options.callback)
		 * 
		 */
		runAjax : function(_options) {
			private_method.runAjax(_options, function(data, ressionStr,
							statusObj) {
						if ($.isFunction(_options.callback)) {
							if (_options.method != 'del')
								_options.callback(data, ressionStr, statusObj);
						} else {
							msgServ.Msgslide('操作成功！');
						}
						if (_options.successMsg) {
							msgServ.Msgslide(_options.successMsg);
						}
					}

			);
		},

		/**
		 * 后台ajax调用，返回调用结果数据
		 * 
		 * @param _options
		 *            ajax调用所需url,data,content等封装信息
		 * @param callbackFunc
		 *            模块内部回调函数，用于针对不同业务需求进行返回数据的处理
		 * @return 调用成功后，将调用结果数据封装到调用参数中(_options)，然后执行业务回调函数(_options.callback(_options))
		 */
		runAjaxE : function(_options) {
			private_method.runAjax(_options, function(r) {
						if ($.isFunction(_options.callback)) {
							if (_options.method != 'del')
								_options.data = r;
							_options.callback(_options);
						} else {
							msgServ.Msgslide('操作成功！');
						}
						if (_options.successMsg) {
							msgServ.Msgslide(_options.successMsg);
						}
					}

			);
		}
	};
});
